


//使用 response.writeHead() 函数发送一个HTTP状态200和HTTP头的内容类型（content-type）
//使用 response.write() 函数在HTTP相应主体中发送文本“Hello World"。
//最后，我们调用 response.end() 完成响应。


// 这里采用非阻塞方式处理是明智的，因为POST请求一般都比较“重” —— 用户可能会输入大量的内容。
// 用阻塞的方式处理大数据量的请求必然会导致用户操作的阻塞。

// 为了使整个过程非阻塞，Node.js会将POST数据拆分成很多小的数据块，然后通过触发特定的事件，
// 将这些小数据块传递给回调函数。这里的特定的事件有data事件（表示新的小数据块到达了）以及
// end事件（表示所有的数据都已经接收完毕）。


var http = require("http");
var url = require("url");

function start(route, handle){
  function onRequest(request, response){
    var postData ="";
    var pathname = url.parse(request.url).pathname;
    console.log("Request url: "+ pathname);

    request.setEncoding("utf8");

    request.addListener("data",function(postDataChunk){
      postData += postDataChunk;
      console.log("Received POST data chunk '"+
      postDataChunk +"'.");
    });

    request.addListener("end",function(){
      route(handle, pathname, response, postData);
    });

  }

  http.createServer(onRequest).listen(8888);
  console.log("Server has started.");
}


// 把某段代码变成模块意味着我们需要把我们希望提供其功能的部分 导出 到请求这个模块的脚本。
exports.start = start; //导出这个函数